package com.ruoyi.caiwu.mapper;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.caiwu.domain.AccountBookGeneral;
import io.lettuce.core.dynamic.annotation.Param;

/**
 * 总账Mapper接口
 *
 * @author ruoyi
 * @date 2025-03-06
 */
public interface AccountBookGeneralMapper
{
    /**
     * 查询总账
     *
     * @param id 总账主键
     * @return 总账
     */
    public AccountBookGeneral selectAccountBookGeneralById(Long id);

    /**
     * 查询总账列表
     *
     * @param accountBookGeneral 总账
     * @return 总账集合
     */
    public List<AccountBookGeneral> selectAccountBookGeneralList(AccountBookGeneral accountBookGeneral);

    // 通过科目编号和会计期间查找当前期间的总账记录
    List<AccountBookGeneral> findGeneralLedgerBySubjectCodeAndPeriod(HashMap<String, String> params);

    //插入新纪录
    void insertGeneralLedger(AccountBookGeneral accountBookGeneral);

    //获取前一个会计期间的期末余额
    BigDecimal findLastBalanceBySubjectCodeAndBeforePeriod(HashMap<String, String> params);

    void updateGeneralLedger(@Param("gl") AccountBookGeneral gl);

    // 根据科目编码和会计期间、摘要查找年初至今的借方总额
    BigDecimal findYearToDateDebitTotal(HashMap<String, String> map);

    // 根据科目编码和会计期间、摘要查找年初至今的贷方总额
    BigDecimal findYearToDateCreditTotal(HashMap<String, String> map);


}
